package elib;

import java.sql.*;

public class Klient extends Osoba{
	private int id;
	
	public Klient(int id, String imie, String nazwisko, String login, String haslo, long pesel, int prawaDostepu) {
		this.id = id;
		super.imie = imie;
		super.nazwisko = nazwisko;
		super.login = login;
		super.haslo = haslo;
		super.pesel = pesel;
		super.prawaDostepu = prawaDostepu;
	}
	
	public void rezerwujKsiazke(int idKsiazki) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Statement stmt = con.createStatement();
			//sprawdzenie czy ksiazka jest dostepna
			int gotowosc = 1;
			String queryRezerwacje = "SELECT * FROM Rezerwacje WHERE KsiazkaidKsiazki="+idKsiazki;
		    ResultSet rs = stmt.executeQuery(queryRezerwacje);
		    if(rs.next())
		    	gotowosc = 0;
		    String queryWypozyczenia = "SELECT * FROM Wypozyczenia WHERE KsiazkaidKsiazki="+idKsiazki;
		    rs = stmt.executeQuery(queryWypozyczenia);
		    if(rs.next())
		    	gotowosc = 0;
		    //wykonanie dodania rezerwacji
			String queryAdd = "INSERT INTO Rezerwacje VALUES("+this.id+","+idKsiazki+", NOW(), "+gotowosc+" );";
			stmt.executeUpdate(queryAdd);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void anulujRezerwacje(int idKsiazki, int gotowosc) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Statement stmt = con.createStatement();
			//wykonanie usuniecia rezerwacji
			String queryDel = "DELETE FROM Rezerwacje WHERE KlientidKlienta="+this.id+" AND KsiazkaidKsiazki="+idKsiazki;
			stmt.executeUpdate(queryDel);
			//jezeli istnieje inna rezerwacja danej ksiazki to nalezy ja aktywowac, jezeli anulowana rzerwacja byla dostepna
			String queryRezerwacje = "SELECT * FROM Rezerwacje WHERE KsiazkaidKsiazki="+idKsiazki+" ORDER BY dataRezerwacji";
		    ResultSet rs = stmt.executeQuery(queryRezerwacje);
		    if(rs.next() && gotowosc==1) {
		    	String queryUp = "UPDATE Rezerwacje SET gotowosc=1 WHERE KlientidKlienta="
		    			+rs.getString("KlientidKlienta")+" AND KsiazkaidKsiazki="+idKsiazki;
				stmt.executeUpdate(queryUp);
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void prolongata(int idKsiazki) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Statement stmt = con.createStatement();
			//sprawdzenie czy ktos nie zarezerwolal tej ksiazki (prolongata nie ejst wtedy mozliwa)
			String queryRezerwacje = "SELECT * FROM Rezerwacje WHERE KsiazkaidKsiazki="+idKsiazki;
		    ResultSet rs = stmt.executeQuery(queryRezerwacje);
		    if(!rs.next()){
		    	String queryUp = "UPDATE Wypozyczenia SET dataBezKary=ADDDATE(CURDATE(),(SELECT okres FROM kara)), iloscPrzedluzen=iloscPrzedluzen+1 "
		    			+"WHERE KlientidKlienta="+this.id+" AND KsiazkaidKsiazki="+idKsiazki;
				stmt.executeUpdate(queryUp);
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public int getId() {
		return id;
	}
}
